IconMap = {
  '7z': 'application-x-7z-compressed',
  'aac': 'audio-x-generic',
  'apk': 'android-package-archive',
  'apng': 'image-png',
  'atom': 'application-atom+xml',
  'avi': 'audio-x-generic',
  'bash': 'application-x-executable-script',
  'bmp': 'image-bmp',
  'c': 'text-x-csrc',
  'cfg': 'text-x-generic',
  'coffee': 'application-x-javascript',
  'conf': 'text-x-generic',
  'cpp': 'text-x-c++src',
  'csh': 'application-x-executable-script',
  'css': 'text-css',
  'csv': 'text-csv',
  'db': 'application-vnd.oasis.opendocument.database',
  'deb': 'application-x-deb',
  'desktop': 'application-x-desktop',
  'doc': 'x-office-document',
  'docx': 'x-office-document',
  'eml': 'message-rfc822',
  'epub': 'application-epub+zip',
  'erb': 'application-x-ruby',
  'ex': 'text-x-generic',
  'exe': 'application-x-executable',
  'fla': 'video-x-generic',
  'flac': 'audio-x-flac',
  'flv': 'video-x-generic',
  'gif': 'image-gif',
  'gml': 'text-xml',
  'go': 'text-x-generic',
  'gpx': 'text-xml',
  'gz': 'application-x-gzip',
  'h': 'text-x-chdr',
  'hxx': 'text-x-c++hdr',
  'hs': 'text-x-haskell',
  'htm': 'text-html',
  'html': 'text-html',
  'ico': 'image-x-ico',
  'ini': 'text-x-generic',
  'iso': 'application-x-cd-image',
  'jar': 'application-x-java-archive',
  'java': 'application-x-java',
  'jpeg': 'image-jpeg',
  'jpg': 'image-jpeg',
  'js': 'application-x-javascript',
  'log': 'text-x-generic',
  'lua': 'text-x-generic',
  'm3u': 'audio-x-generic',
  'markdown': 'text-x-generic',
  'md': 'text-x-generic',
  'mkv': 'video-x-matroska',
  'mp3': 'audio-x-mpeg',
  'mp4': 'video-mp4',
  'odp': 'x-office-presentation',
  'ods': 'x-office-spreadsheet',
  'odt': 'x-office-document',
  'ogg': 'audio-x-generic',
  'otf': 'application-x-font-otf',
  'pdf': 'application-pdf',
  'pgp': 'application-pgp',
  'php': 'application-x-php',
  'pkg': 'package-x-generic',
  'pl': 'application-x-perl',
  'png': 'image-png',
  'ppt': 'x-office-presentation',
  'pptx': 'x-office-presentation',
  'psd': 'image-x-psd',
  'py': 'text-x-generic',
  'pyc': 'application-x-python-bytecode',
  'rar': 'application-x-rar',
  'rb': 'application-x-ruby',
  'rpm': 'application-x-rpm',
  'rtf': 'text-rtf',
  'sh': 'application-x-executable-script',
  'svg': 'image-svg+xml-compressed',
  'svgz': 'image-svg+xml-compressed',
  'swf': 'application-x-shockwave-flash',
  'tar': 'application-x-tar',
  'text': 'text-x-generic',
  'tiff': 'image-tiff',
  'ttf': 'application-x-font-ttf',
  'txt': 'text-x-generic',
  'wav': 'audio-x-wav',
  'webm': 'video-webm',
  'wmv': 'video-x-wmv',
  'xcf': 'image-x-xcf',
  'xhtml': 'text-html',
  'xls': 'x-office-spreadsheet',
  'xlsx': 'x-office-spreadsheet',
  'xml': 'text-xml',
  'xpi': 'package-x-generic',
  'xz': 'application-x-lzma-compressed-tar',
  'zip': 'application-zip',
  'zsh': 'application-x-executable-script',
  'opml': 'text-xml',
};

function iconFor(path, isDir) {
  var iconImage = "<img src='/icons/{0}.svg' width=24 class='fileicon'>";
  if (isDir) {
    return iconImage.format('folder');
  }

  var extension = path.slice(path.lastIndexOf('.') + 1);
  var icon = "application-octet-stream";
  if (IconMap[extension] !== undefined) {
    icon = IconMap[extension];
  }
  return iconImage.format(icon);
}
